Ruby 日記 27日目: 「定義に関する操作」のalias
#Ruby_日記 #2021-09-23
https://rex.libertyfish.co.jp/exam_histories/42141/user_answers/a760fa2e-d89f-4d9d-bc7c-74d19fd08edf
期待した出力結果になるようにXXXXに適切なコードを選べ
code:rb
class String
XXXX
end
p "12345".hoge
選択肢:
alias :hoge, :reverse
alias :reverse, :hoge
alias hoge reverse
alias reverse hoge
解説:
Ruby 日記 13日目: Module#alias_methodの引数と似た問題だな
https://docs.ruby-lang.org/ja/2.1.0/doc/spec=2fdef.html#alias
code:rb
alias foo bar
alias :foo :bar
alias $MATCH $&
メソッドあるいはグローバル変数に別名をつけます。メソッド名に は識別子そのものか リテラル/シンボル を指定します(obj.method のよ うな式を書くことはできません)。alias の引数はメソッド 呼び出し等の一切の評価は行われません。
instance method Module#alias_method (Ruby 2.1.0) との違いは
グローバル変数の別名をつけることはできません
だな。
あ、あと、カンマ区切りで渡すか否か、も違うね。
alias はカンマなし
Module#alias_method は2つの引数をとるメソッドなのでカンマ区切りで渡す
code:sh
# ruby gold/ex27/choice01.rb
gold/ex27/choice01.rb:2: syntax error, unexpected ','
alias :hoge, :reverse
^
code:sh
# ruby gold/ex27/choice02.rb
gold/ex27/choice02.rb:2: syntax error, unexpected ','
alias :reverse, :hoge
^
code:sh
# ruby gold/ex27/choice03.rb
54321
code:sh
# ruby gold/ex27/choice04.rb
gold/ex27/choice04.rb:2:in <class:String>': undefined method hoge' for class `String' (NameError)
from gold/ex27/choice04.rb:1:in `<main>'
よって正解は「alias hoge reverse」だ